package cn.swpu.util;

import cn.swpu.domin.Department;

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;

/**
 * Created by 11616 on 2016/7/20.
 */
public class DepartmentUtils {
    /**
     * 遍历部门树，把所有的部门遍历出来放到同一个集合中返回
     * @param topList
     * @return
     */
    public static List<Department> getAllDeparments(List<Department> topList) {
        List<Department> list = new ArrayList<Department>();
        walkDepartmentTreeList("┣",topList,list);
        return list;
    }
    private static void walkDepartmentTreeList(String prefix ,Collection<Department> topList,List<Department> list){
        for (Department top: topList) {
            //使用副本，因为原对象在Session，如果在这里使用原对象，
            // 将会改变name属性，如果再次调用到这个原对象进行数据库操作就会改变数据库中的name属性
            Department copy = new Department();
            copy.setId(top.getId());
            copy.setName(prefix+top.getName());
            //添加到list集合中
            list.add(copy);

            //使用递归查找子树
            walkDepartmentTreeList("　"+prefix,top.getChildren(),list);//使用全角的空格
        }

    }

}
